package com.ato.IO;

import org.junit.Test;

import java.io.*;

/**
 * @author wangjing
 * @create 2021--12--13--20:23
 * 转换流：
 * InputSteamReader   :  将字节的输入流转换成字符的输入流
 * OutPutStreamWriter ： 将字符的输出流 转换成字节流
 * 作用：提供字节流和字符流之间的转换
 */
public class InputStreamReaderTest {
    @Test
    public void InputStreamReaderTest() {

        InputStreamReader isr = null;
        try {
//            可以直接放入路径，简写new File();
            FileInputStream fis = new FileInputStream("renameTO.txt");
//            参数1：文件   参数2：文件的字符编码。
            isr = new InputStreamReader(fis, "UTF-8");
            int len;
            char[] cbuf = new char[1024];
            while ((len = isr.read(cbuf)) != -1) {
                String str = new String(cbuf, 0, len);
                System.out.print(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
//            关闭也是一样的，关闭外层的，内层的自动关闭
            if (isr != null) {
                try {
                    isr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    @Test
    public void InputStreamReaderAndInputStramWriterTest() {

        InputStreamReader isr = null;
        OutputStreamWriter osr = null;
        try {

            FileInputStream fis = new FileInputStream("renameTO.txt");
            FileOutputStream fos = new FileOutputStream("OutputStreamWriterRenameTO.txt");
//              解码过程
            isr = new InputStreamReader(fis, "UTF-8");
//            编码过程
//            转换成GBK格式，
            osr = new OutputStreamWriter(fos, "GBK");
            int len;
            char[] cbuf = new char[1024];
            while ((len = isr.read(cbuf)) != -1) {
//                String str = new String(cbuf, 0, len);
//                System.out.print(str);
                osr.write(cbuf, 0, len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
//            关闭也是一样的，关闭外层的，内层的自动关闭
            if (isr != null) {
                try {
                    isr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (osr != null) {
                try {
                    osr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
//        System.out  控制台输出        System.setOut(OutputStream os)
//        System.in : 标准键盘输入   System.setIn(InputStream is)
    }


}
